package View;

import DB.Usuario.ControllerUsuario;
import DB.Controle.ControllerControle;
import DB.Evento.ControllerEvento;
import DB.Inscricao.ControllerInscricao;
import Model.Usuario;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class FirstView {

    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            Logger.getLogger(FirstView.class.getName()).log(Level.SEVERE, null, ex);
        }

        /**
         * Verifica a quantidade de usuarios cadastrados.
         * Se for 0, insere os registros padrão.
         */
        try {
            ControllerUsuario cu = ControllerUsuario.getInstance();
            if (cu.getRowsCount() == 0) {
                cu.standardUsuarios();
            }
        } catch (SQLException e) {
            e.printStackTrace(System.err);
        }

        /**
         * Verifica a quantidade de eventos cadastrados.
         * Se for 0, insere os registros padrão.
         */
        ControllerEvento ce = ControllerEvento.getInstance();
        if (ce.getRowsCount() == 0) {
            ce.standardEventos();
        }

        /**
         * Verifica a quantidade de inscrições cadastradas.
         * Se for 0, insere os registros padrão.
         */
        ControllerInscricao ci = ControllerInscricao.getInstance();
        if (ci.getRowsCount() == 0) {
            ci.standardInscricoes();
        }

        /**
         * Verifica se há login salvo
         */
        /**
         * Busca na tabela o registro, se houver. *
         */
        ControllerControle cc = ControllerControle.getInstance();
        int userID = cc.getID();

        /**
         * Se for 0 ou maior, é porque existe algum login salvo. *
         */
        if (userID >= 0) {
            //Busca o usuario com o ID salvo.
            Usuario salvo = null;

            try {
                /**
                 * Busca o usuario na base, pelo ID.
                 */
                salvo = ControllerUsuario.getInstance().getByID(userID);
            } catch (SQLException e) {
                e.printStackTrace(System.err);
            }

            if (salvo == null) {
                System.out.println("ID salvo é invalido.");
                cc.delete();
            }

            if (salvo.getOperador() == 1) {
                /**
                 * Abre diretamente a tela principal. *
                 */
                UsuarioOperadorMainView mv = new UsuarioOperadorMainView(salvo);
                mv.setVisible(true);
            } else {
                UsuarioParticipanteMainView um = new UsuarioParticipanteMainView(salvo);
                um.setVisible(true);
            }
        } else {
            /**
             * Não encontrou login salvo, abre a tela de login. *
             */
            LoginView lv = new LoginView();
            lv.setVisible(true);
        }
    }
}
